package ocio.services;


import java.util.List;
import com.opensymphony.xwork2.Action;

import ocio.actions.ModificarAdminAction;
import ocio.beans.Admin;
import ocio.dao.AdminDao;

/**
 * Clase encargada de ofrecer la lógica de negocio asociada a la clase Admin.
 * Ofrece funciones CRUD para la gestión de Administradores.
 * @author Esther García Galán
 * @author Rubén Gómez Vales
 * @version 1.0 13/05/2014
 * @see ocio.beans.Admin
 * @see ocio.services.ServiceIF
 */
public class AdminService implements ServiceIF {

	AdminDao adminDao;
	
	public AdminService (){
		adminDao = new AdminDao();
	}
	
	@Override
	public boolean add(Action form) {
		return false;
	}
	
	public List<Object> searchByFields(Action form){
		return null;
	} 
	
	/**
	 * Actualiza los datos del aministrador en función de los campos introducidos
	 * por él mismo y recogidos en objeto de la clase Action
	 * @param form objeto de la clase Action con los datos del administrador
	 */
	@Override
	public void update(Action form) {
		
		Admin a = new Admin();
		ModificarAdminAction aform = (ModificarAdminAction) form;
		a = adminDao.findById(aform.getId());
		a.setNombre(aform.getNombre());
		if(aform.getPassword().length()!=0){
			a.setPassword(aform.getPassword());
		}
		adminDao.attachDirty(a);
	}
	
	/**
	 * Búsqueda de administrador por identificador.
	 * @param id identifificador en la base de datos del administrador.
	 * @return a Objeto correspondiente al administrador con el identificador dado.
	 */
	public Object searchById(int id){
		Admin a;
		a = adminDao.findById(id);
		return a;
	}

	/**
	 * Borra el administrador.
	 * @param o Objeto correspondiente al administrador que se quiere borrar.
	 */
	@Override
	public void delete(Object o) {
		Admin a;
		a = (Admin)o;
		adminDao.delete(a);
	}

}

